import warnings
import pandas as pd

from selenium.webdriver.common.devtools.v134.debugger import step_out


def practice():
    # 获取pandas版本
    print(pd.__version__)
    # 设置输出最多为10行
    pd.options.display.max_rows = 10
    # 设置输出最多列20
    pd.options.display.max_columns = 20
    # 使用列表创建Series对象，创建一维数组
    data = pd.Series([1, 2, 3, 4, 5])
    # print(data)
    # 获取索引 数据
    print(data.index)
    print(data.values)
    # 自定义索引
    data = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
    print(data)
    # 使用list指定索引
    data = pd.Series([1, 2, 3, 4, 5], index=list('abcde'))
    print(data)
    # 传入字典创建Series对象
    stu = {'name': '张三', 'age': 18, 'sex': '男'}
    # pd.Series(stu,index = ['name','sex'])
    # 如果字典不存在则用NaN填充
    data = pd.Series(stu, index=['name', 'sex', 'birth'])
    # 用标量创建
    data1 = pd.Series(20, index=list('abcde'))
    print(data1)
    #判断是否有空值
    print(data.hasnans)
    # 忽略所有警告,使用时放在最前面用
    warnings.filterwarnings("ignore")
    # 忽略特定类型的警告
    warnings.filterwarnings("ignore", category=FutureWarning)
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    warnings.filterwarnings("ignore", category=UserWarning)

    # 只显示一次警告
    warnings.filterwarnings("once")

    # 总是显示警告
    warnings.filterwarnings("always")

    # 恢复默认设置
    warnings.filterwarnings("default")

def read_file(file_path):
    # 先设置列名对齐（在读取文件之前）
    pd.set_option('display.unicode.ambiguous_as_wide', True)
    pd.set_option('display.unicode.east_asian_width', True)
    pd.set_option('display.colheader_justify', 'left') #列名左对齐
    
    # 使用正确的文件路径
    df = pd.read_excel(file_path)  # 或者使用绝对路径
    data = df.head()  # 查看前五行数据
    # 禁止换行
    pd.set_option('expand_frame_repr', False)
    #显示所有行
    print(data)
def stu_dataFrame():
    data = [
        ['张三',18,'男'],
        ['李四',19,'男'],
        ['王五',20,'男'],
    ]
    index = ['a','b','c']
    columns = ['name','age','sex']
    df = pd.DataFrame(data,index = index,columns = columns)
    # col = df.columns
    for col in columns:
        series = df[col]
        print(series)
    # print(col)
    # 查看索引
    # print(df.index)
    # print(df)

def dic_dataFrame():
    data = {
        'name': ['张三', '李四', '王五', '王五', '张三'],  # 有重复数据
        'age': [18, 19, 20, 20, 18],
        'sex': ['男', '男', '男', '男', '男']
    }
    
    # 创建DataFrame
    df = pd.DataFrame(data)
    
    print("原始数据:")
    print(df)
    print("\n" + "="*50 + "\n")
    
    # 方法1: 使用unique()获取单列的唯一值
    unique_names = df['name'].unique()
    print("name列的唯一值:", unique_names)
    
    # 方法2: 使用drop_duplicates()去重整行
    df_unique = df.drop_duplicates()
    print("\n去重后的整行数据:")
    print(df_unique)
    
    # 方法3: 对特定列去重
    df_unique_name = df.drop_duplicates(subset=['name'])
    print("\n按name列去重:")
    print(df_unique_name)
    
    # 方法4: 使用Series的unique()方法
    print("\n各列的唯一值:")
    for col in df.columns:
        unique_values = df[col].unique()
        print(f"{col}列的唯一值: {unique_values}")
def data_import():
    # header等于多少就默认第几行作为列名，usecols等于多少就默认第多少列作为数据
    # df = pd.read_excel('../data/测试表.xlsx',sheet_name='Sheet1',header=0,usecols=[0,2])
    df = pd.read_excel('../data/测试表.xlsx',sheet_name='Sheet1')
    # df1 = pd.read_csv('../data/测试文件.txt',sep='/')
    print(df)





if __name__ == '__main__':
    # file_path = '../data/测试表.xlsx'
    # read_file(file_path)
    # practice()
    # stu_dataFrame()
    data_import()